/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerEmpleado;
import GUI.Jefe.AdminBibliotecarios.PanelActualizarBibliotecario;
import LogicaNegocio.Empleados.Bibliotecario;
import LogicaNegocio.Validacion.VEmpleado;
import MainBiblioSoft.BiblioSoft;
import javax.swing.JOptionPane;

/**
 * Esta clase en java permite el control de eventos
 * para la actualizacion de bibliotecarios en el sistema.
 *
 * @author sebaxtian
 * Archivo: ControlActualizarBibliotecario.java
 * @version 1.0
 * Fecha: dom may  9 02:22:28 COT 2010
 */


public class ControlActualizarBibliotecario {

    //Atributos de clase
    private PanelActualizarBibliotecario panelActualizar;
    private Bibliotecario bibliotecario;
    private ManagerEmpleado gestorEmpleado;
    private boolean encontrado;


    public ControlActualizarBibliotecario(PanelActualizarBibliotecario panelActualizar) {
        this.panelActualizar = panelActualizar;
        gestorEmpleado = new ManagerEmpleado();
        encontrado = false;
    }

    public void buscarBibliotecario() {
        try {
            int cedulaBibliotecario = Integer.parseInt(panelActualizar.textFieldBuscar.getText());
            bibliotecario = gestorEmpleado.obtenerBibliotecario(cedulaBibliotecario);
            //muestra los datos
            panelActualizar.textFieldCedula.setText(bibliotecario.getCedula()+"");
            panelActualizar.textFieldDireccion.setText(bibliotecario.getDireccion());
            panelActualizar.textFieldPrimerApellido.setText(bibliotecario.getPrimerApellido());
            panelActualizar.textFieldPrimerNombre.setText(bibliotecario.getPrimerNombre());
            panelActualizar.textFieldSegundoApellido.setText(bibliotecario.getSegundoApellido());
            panelActualizar.textFieldSegundoNombre.setText(bibliotecario.getSegundoNombre());
            panelActualizar.textFieldTelefono.setText(bibliotecario.getTelefono());
            panelActualizar.textFieldUniversidad.setText(bibliotecario.getUniversidad());
            panelActualizar.checkBoxVinculado.setSelected(bibliotecario.getVinculado());
            //tambien
            panelActualizar.textFieldCedulaNueva.setText(bibliotecario.getCedula()+"");
            panelActualizar.textFieldDireccionNueva.setText(bibliotecario.getDireccion());
            panelActualizar.textFieldPrimerApellidoNuevo.setText(bibliotecario.getPrimerApellido());
            panelActualizar.textFieldPrimerNombreNuevo.setText(bibliotecario.getPrimerNombre());
            panelActualizar.textFieldSegundoApellidoNuevo.setText(bibliotecario.getSegundoApellido());
            panelActualizar.textFieldSegundoNombreNuevo.setText(bibliotecario.getSegundoNombre());
            panelActualizar.textFieldTelefonoNuevo.setText(bibliotecario.getTelefono());
            panelActualizar.textFieldUniversidadNueva.setText(bibliotecario.getUniversidad());
            panelActualizar.checkBoxVinculadoNuevo.setSelected(bibliotecario.getVinculado());
            //bibliotecario encontrado
            encontrado = true;
        } catch(NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelActualizar, "El campo numero de cedula solo debe contener un valor numerico", "Numero Cedula", JOptionPane.ERROR_MESSAGE);
            encontrado = false;
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(panelActualizar, ex.getMessage(), "Error Buscar", JOptionPane.INFORMATION_MESSAGE);
            encontrado = false;
        }
    }

    public void actualizarBibliotecario() {
        if(encontrado){
            try {
                //bibliotecario = new Bibliotecario();
                //---
                bibliotecario.setCedula(Integer.parseInt(panelActualizar.textFieldCedula.getText()));
                bibliotecario.setCedulaEmpleadoJefe(BiblioSoft.jefeBibliotecario.getCedula());
                bibliotecario.setPrimerApellido(panelActualizar.textFieldPrimerApellidoNuevo.getText());
                bibliotecario.setPrimerNombre(panelActualizar.textFieldPrimerNombreNuevo.getText());
                bibliotecario.setSegundoApellido(panelActualizar.textFieldSegundoApellidoNuevo.getText());
                bibliotecario.setSegundoNombre(panelActualizar.textFieldSegundoNombreNuevo.getText());
                bibliotecario.setDireccion(panelActualizar.textFieldDireccionNueva.getText());
                bibliotecario.setTelefono(panelActualizar.textFieldTelefonoNuevo.getText());
                bibliotecario.setUniversidad(panelActualizar.textFieldUniversidadNueva.getText());
                bibliotecario.setCargo("Bibliotecario");
                bibliotecario.setVinculado(panelActualizar.checkBoxVinculadoNuevo.isSelected());
                //valida nuevos datos
                new VEmpleado(bibliotecario);
                //persiste
                gestorEmpleado.actualizarEmpleado(Integer.parseInt(panelActualizar.textFieldCedula.getText()), bibliotecario);
                //limpia los campos
                limpiarCampos();
                //informa
                JOptionPane.showMessageDialog(panelActualizar, "El Bibliotecario ha sido actualizado", "Actualizar", JOptionPane.INFORMATION_MESSAGE);
            } catch(NumberFormatException ex) {
                JOptionPane.showMessageDialog(panelActualizar, "El campo numero de cedula solo debe contener un valor numerico", "Numero Cedula", JOptionPane.ERROR_MESSAGE);
            } catch (VEmpleado ex) {
                JOptionPane.showMessageDialog(panelActualizar, ex.getMessage(), "Error Registro", JOptionPane.INFORMATION_MESSAGE);
            }
        }
    }

    private void limpiarCampos() {
        panelActualizar.textFieldCedula.setText("");
        panelActualizar.textFieldDireccion.setText("");
        panelActualizar.textFieldPrimerApellido.setText("");
        panelActualizar.textFieldPrimerNombre.setText("");
        panelActualizar.textFieldSegundoApellido.setText("");
        panelActualizar.textFieldSegundoNombre.setText("");
        panelActualizar.textFieldTelefono.setText("");
        panelActualizar.textFieldUniversidad.setText("");
        panelActualizar.checkBoxVinculado.setSelected(false);
        //tambien
        panelActualizar.textFieldCedulaNueva.setText("");
        panelActualizar.textFieldDireccionNueva.setText("");
        panelActualizar.textFieldPrimerApellidoNuevo.setText("");
        panelActualizar.textFieldPrimerNombreNuevo.setText("");
        panelActualizar.textFieldSegundoApellidoNuevo.setText("");
        panelActualizar.textFieldSegundoNombreNuevo.setText("");
        panelActualizar.textFieldTelefonoNuevo.setText("");
        panelActualizar.textFieldUniversidadNueva.setText("");
        panelActualizar.textFieldBuscar.setText("");
        panelActualizar.checkBoxVinculadoNuevo.setSelected(false);
        //encontrado
        encontrado = false;
    }

}
